/*

TODO:
	* Make XML file syntax for dialogue tree
	* Make parser for tree (in dialogue manager?)
	* Make dialogue manager
	* Make script functions, function lookup table (functions in the dialogue manager class?)
	* Make XML dialogue scripting use these conditions
	* etc.


*/

#pragma once

#include <boost/graph/adjacency_list.hpp>
#include <vector>
#include <string>

/*  Special dialogue IDs:
*		* GREETING: The node contains responses to be used for greeting the player.
*	
*
*/


struct dialogueResponse {
	unsigned char priority; // If more than one response is valid, the higher-priority response is selected.
	std::string responseText;
	std::vector<std::string> conditions; // Conditions loaded as strings from scriptable XML files, parse separately - NOT IMPLEMENTED YET
	std::vector<std::string> choices;

	bool sayOnce;
	bool farewell;
};

struct dialogueTopic {  // Vertex properties
	std::string ID; // internal ID.
	std::string topicText;
	std::vector<dialogueResponse> responses;
};

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, dialogueTopic> dialogueTree;